nginx lua 调试 |
您所在的位置:网站首页 › nginx 调试模式 › nginx lua 调试 |
疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口 】 架构师成长+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战 】 前言Crazy-SpringCloud 微服务脚手架 &视频介绍: Crazy-SpringCloud 微服务脚手架,是为 Java 微服务开发 入门者 准备的 学习和开发脚手架。并配有一系列的使用教程和视频,大致如下: 高并发 环境搭建 图文教程和演示视频,陆续上线: 中间件链接地址Linux Redis 安装(带视频)Linux Redis 安装(带视频)Linux Zookeeper 安装(带视频)Linux Zookeeper 安装, 带视频Windows Redis 安装(带视频)Windows Redis 安装(带视频) RabbitMQ 离线安装(带视频)RabbitMQ 离线安装(带视频) ElasticSearch 安装, 带视频ElasticSearch 安装, 带视频 Nacos 安装(带视频)Nacos 安装(带视频)疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 面试必备 + 面试必备
Openresty是基于nginx与lua的高性能web框架,继承了大量的高质量的lua库、第三方模块以及大多数依赖项。 目前对于lua主流开发工具有vscode+lua插件、IntelliJ IDEA+EmmyLua、ZeroBrane Studio、还有其他的一些文本编辑软件等。 lua作为一种脚本语言,除了开发简洁,性能优越之外,还应该具备调试功能,对于开发者才能算得上更加友好。 1 ZeroBrane 简介ZeroBrane Studio已被用于调试各种Lua引擎 – 游戏框架(如Corona,Gideros,Moai,Love2d),家庭自动化设备,wirehark 脚本,Adobe Lightroom插件等 – 但是已经有几种Lua环境没有尝试过。其中一个是OpenResty / Nginx Lua脚本。OpenResty是一个基于nginx的网络应用服务器,一个非常快速的Web服务器,它提供了具有各种后端(Redis,Memcached,MySQL,HTTP服务器等)的非阻塞IO,并支持Lua作为其脚本语言。 ZeroBrane的特点: 小巧,可移植,开源和跨平台(Windows,macOS和Linux); 自动完成功能,关键字和自定义API; 110多种语言和文件格式的语法高亮和折叠; 具有自动刷新功能的项目视图,能够从列表中隐藏文件和目录; 交互式控制台,用于测试本地和远程执行的Lua代码片段; 集成调试器,支持本地和远程调试,包括跨平台和设备上调试; 使用Lua, LÖVE, Gideros, Moai, Corona,GSL-Shell和其他Lua引擎进行实时编码 ; 多语言支持,翻译为法语,西班牙语,俄语,德语,中文,世界语,意大利语,保加利亚语和巴西葡萄牙语语言和文档,以添加您自己的语言; 50+扩展包在包库 ; 模糊搜索的文件,符号,和库函数,函数的轮廓,和更多。 下载地址: https://studio.zerobrane.com/ 疯狂创客圈的网盘,也提供本实例配置的版本下载。 疯狂创客圈网盘入口 包括以下三个方面: openresty 的环境 project工程的环境 ZeroBrane Studio 的环境 lua 调试依赖包的配置 2.1 openresty 的环境这里使用的是 openresty-1.13.6.2-win32 ,具体的安装和启动脚本,请参见 下面的博客: windows openresty 死磕:安装和启动脚本 但是,一定要换成32位的版本。 然后,修改 openresty-start.bat 中对应的两个配置项。 修改完成后,使用openresty-start.bat 脚本,进行启动。 openresty-restart.bat 脚本,开发过程中会经常用到,因为每修改一次lua脚本,需要重新启动openresty/nginx ,重新进行加载。 2.2:lua project 工程的环境大致按照下面的结构,组织 lua脚本的工程。 或者说nginx web项目的工程。 工程的目录,会在两个地方用到: (1) openresty的 openresty-start.bat 脚本中 具体请参见网盘的 openresty-start.bat 脚本 源码。 (2) 也会在 ZeroBrane Studio 的环境 用到 会作为 ZeroBrane Studio 的工程目录。 2.3 ZeroBrane Studio 的工程目录通过ZeroBrane Studio的file > new 菜单,打开 lua project 工程 所在的目录。 将lua的依赖包路径,配置到 工程的 conf/nginx.conf 文件下: (1) 项目的lua脚本路径 (2) ZeroBraneStudio-1.80 的lua脚本路径 (3) nginx的lua脚本路径 大致如下: # for windows lua_package_path "C:/dev/refer/LuaDemoProject/src/?.lua;E:/tool/ZeroBraneStudio-1.80/lualibs/?/?.lua;E:/tool/ZeroBraneStudio-1.80/lualibs/?.lua;E:/tool/openresty-1.13.6.2-win32/lualib/?.lua;;"; lua_package_cpath "E:/tool/ZeroBraneStudio-1.80/bin/clibs/?.dll;E:/tool/openresty-1.13.6.2-win32/lualib/?.dll;;";如果是linux环境,需 要进行相应的 路径,和文件类型的修改。上面的dll,在liux环境,需要改成so。 2.5 准备调试脚本调试的脚本为:luaScript/test.lua --- 启动调试 local mobdebug = require("luaScript.initial.mobdebug"); mobdebug.start("192.168.0.5"); ngx.say("hello world."); ngx.say(""); ngx.say(package.path); local i=100; ngx.say(""); ngx.say("i="..i); mobdebug.done();在conf/nginx.conf 文件, 配置好 luaScript/test.lua 对应的路径: location /test { default_type 'text/html'; charset utf-8; content_by_lua_file luaScript/test.lua; } 3 开始调试 lua 3.1 启动调试的服务器启动ZeroBrane Studio(zbstudio.exe或zbstudio.sh)并启动调试服务器 ,菜单为 Project | Start Debugger Server。 在浏览器输入lua脚本所配置的地址,如果: http://localhost/test location /test { default_type 'text/html'; charset utf-8; content_by_lua_file luaScript/test.lua; }ZeroBrane Studio会进入绿色箭头对应行的代码 3.3 查看运行时的变量值使用watch工具,将需要查看的变量, 填入。 然后开始单步执行。 具体如下图 程序调试完成后,可以在浏览器看到预期的结果。 如果出现以下问题: 2019/12/28 17:09:57 [error] 14568#13196: *1 lua entry thread aborted: runtime error: error loading module 'socket.core' from file 'E:/tool/ZeroBraneStudio-1.80/bin/clibs/socket\core.dll'用一种可能就是使用了的64位的OpenResty,换成32位的OpenResty 即可。 疯狂创客圈的网盘,本文所涉及有的工具的安装文件,都有提供。 具体,请关注 Java 高并发研习社群 【博客园 总入口 】 最后,介绍一下疯狂创客圈:疯狂创客圈,一个Java 高并发研习社群 【博客园 总入口 】 疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备 的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战》 Netty 源码、原理、JAVA NIO 原理 Java 面试题 一网打尽 疯狂创客圈 【 博客园 总入口 】 R0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTQ4NTM5OC8yMDE5MDgvMTQ4NTM5OC0yMDE5MDgyMjIyNTE1NjQyNy05NTY0MjQxMjQuanBn?x-oss-process=image/format,png) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |